//
//  XXUnit.h
//  XXSwiftDemo
//
//  Created by zhaonaixin on 2021/10/19.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "XXHeadFile.h"

NS_ASSUME_NONNULL_BEGIN

typedef void(^MyQueue)(void);
typedef void(^ProgressBlock)(id progress);
typedef void(^SuccessBlock)(id success);
typedef void(^FailureBlock)(id failure);
typedef void(^payBlock)(NSInteger num);

@interface XXUnit : NSObject

// 获取IP地址
+ (NSString *)getIPAddress:(BOOL)preferIPv4;
// 获取UUID
+ (NSString *)getUUID;
// 获取GUID
+ (NSString *)getGUID;
// 获取手机型号
+ (NSString*)getPhoneType;

/**
系统自带分享图片或者文件

@param type 1为图片 2为文件 3直接设置itemsArr 标题NSString 图片uiimage 链接NSURL一起放数组里
@param name 名字或者url文件地址URl
*/

+(void)shareSystemItemsWithType:(NSInteger)type andImgnameOrFilename:(NSString*)name andActiveItems:(NSArray *)ItemsArr andviewcontroll:(UIViewController *)controll success:(SuccessBlock)success failure:(FailureBlock)failure;
//设置状态栏颜色
+ (void)setStatusBarBackgroundColor:(UIColor *)color;

#pragma mark - 支付
-(void)wxPay:(NSDictionary *)dic andBlock:(payBlock)block;
#pragma mark - 多线程
/**
 主线程执行
 
 @param myQueue 任务
 */
+(void)GCDMainQueue:(MyQueue)myQueue;
/**
 *  异步  并行通信
 *
 *  @param myQueue 任务
 */
+ (void)GCDMoreQueueParallelProgressBlock:(MyQueue)myQueue;
/**
 *  异步 串行通信
 *
 *  @param myQueue 任务
 */
+ (void)GCDMoreQueueSeriesProgressBlock:(MyQueue)myQueue;

/**
 线程组

 @param done 完成后执行带模块
 @param queues 要做的任务
 */
+ (void)queueGroupdoneBlock:(MyQueue)done queue:(MyQueue)queues, ...NS_REQUIRES_NIL_TERMINATION;

#pragma mark -

// 复制到剪切板
+ (void)copyToPasteboard:(NSString *)str;
+ (NSString *)getPasteboardString;

#pragma mark -

/**
 *  将阿拉伯数字转换为中文数字
 */
+(NSString *)translationArabicNum:(NSInteger)arabicNum;

/**
  判断是否包含表情

 @param string 字符串

 @return 结果
 */
+ (BOOL)stringContainsEmoji:(NSString *)string;
/**
 *  判断手机号码是否正确
 *
 *  @param phoneText 手机号
 *
 *  @return 判读结果
 */
+ (BOOL)isTelphoneNum:(NSString *)phoneText;
/**
 *  判断是否是整形数据
 *
 *  @param string 数据
 *
 *  @return 结果
 */
+ (BOOL)isPureInt:(NSString*)string;
/**
 *  判断是否包含中文
 *
 *  @param password 字符串
 *
 *  @return 结果
 */
+ (BOOL)isValidatePassword:(NSString *)password;

/**
 判断是否满足 6-18位数字或字母密码
 
 @param password 密码
 
 @return 结果
 */
+(BOOL)isPassword:(NSString *)password;

//判断邮箱格式是否正确的代码：
+(BOOL)isValidateEmail:(NSString *)email;

/**
 身份证格式识别
 
 @param cardNo 身份证
 
 @return 结果
 */
+(BOOL)isIDCard:(NSString*)cardNo;

/**
 文件是否是图片判断
 
 @param url 链接
 @return 结果
 */
+(BOOL)judgeUrlIsImage:(NSString *)url;

#pragma mark - 硬件设备相关

/**
 打电话

 @param num 电话号码
 */
+(void)callWithPhoneNum:(NSString *)num;
/**
 闪光灯操作
 
 @param state YES 开  NO关
 */
+(void)flashlightTorchMode:(BOOL)state;

// 打开某APP
+ (BOOL)openApp:(NSString *)urlScthem;

// 打开该app的设置
+ (void)openSettings;

@end

NS_ASSUME_NONNULL_END
